//一开始不屏蔽 20s  然后屏幕sigint 60s 后解除屏幕

#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <sys/time.h>
#include <sys/types.h>

void hand(int n)
{
    printf("信号处理函数:%d\n",n);
}

int main()
{
    sigset_t  set,oldSet;
    sigemptyset(&set);

    sigaddset(&set,2);

    signal(2,hand);

    //前20秒不屏蔽
    sleep(20);
    int r;
    if (1==sigismember(&set,2))
    {
        printf("设置屏蔽\n");
        r = sigprocmask(SIG_BLOCK,&set,&oldSet);
        if (-1==r)
        {
            printf("设置屏蔽失败：%m\n");
        }else
        {
            printf("设置屏蔽成功\n");
        }
    }
    sleep(60);
    if (1==sigismember(&set,2))
    {
        printf("解除屏蔽\n");
        r =sigprocmask(SIG_UNBLOCK,&set,&oldSet);
        if (-1==r)
        {
            printf("接触屏蔽失败:%m\n");
        }else
        {
            printf("解除屏幕成功\n");
        }
    }

    int n =0;
    while (1)
    {
        printf("正常运行:%d\n",n++);
    }


    return 0;
}